home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1997 August / Walnut Creek CDROM.7z / LISTINGS / V_12_11 / ALLISON / OPNEW.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-04  |  629 b   |  35 lines

  1.  
  2. LISTING 22 - Typical implementation of ::operator new and
  3. ::operator delete
  4.  
  5. // opnew.cpp
  6. #include <stdlib.h>
  7. #include <new.h>
  8.  
  9. void *operator new(size_t siz)
  10. {
  11.    // Get new_handler
  12.     void (*new_handler)() = set_new_handler(0);
  13.     set_new_handler(new_handler);
  14.  
  15.     for (;;)
  16.     {
  17.         // Return pointer upon success
  18.         void *p = malloc(siz);
  19.         if (p)
  20.             return p;
  21.  
  22.         // If there is a handler, call it
  23.         if (new_handler)
  24.             new_handler();
  25.         else
  26.             return 0;
  27.     }
  28. }
  29.  
  30. void operator delete(void *p)
  31. {
  32.     if (p)
  33.         free(p);
  34. }
  35.